package leetcode.code733.FloodFill;

/**
 * 递归栈溢出
 *
 * @author Max
 * @date 2021年8月18日
 * @description
 */
public class Solution73301 extends FloodFill {

	@Override
	public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
		int oldColor = image[sr][sc];
		if (oldColor == newColor)
			return image;
		this.floodFill(image, sr, sc, newColor, oldColor);
		return image;
	}

	public void floodFill(int[][] image, int sr, int sc, int newColor, int oldColor) {
		if (sr >= 0 && sr < image.length && sc >= 0 && sc < image[sr].length && image[sr][sc] == oldColor) {
			image[sr][sc] = newColor;
//			if (sr > 0) {
			this.floodFill(image, sr - 1, sc, newColor, oldColor);
//			}
//			if (sr < image.length) {
			this.floodFill(image, sr + 1, sc, newColor, oldColor);
//			}
//			if (sc > 0) {
			this.floodFill(image, sr, sc - 1, newColor, oldColor);
//			}
//			if (sc < image[sr].length) {
			this.floodFill(image, sr, sc + 1, newColor, oldColor);
//			}
		}
	}

	public static void main(String[] args) {
		Solution73301 so = new Solution73301();
		so.debug1();
	}

}
